/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package issr.boundary;

import com.vaadin.event.ShortcutAction;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Form;
import com.vaadin.ui.FormLayout;
import com.vaadin.ui.Select;
import com.vaadin.ui.TextField;
import issr.boundary.vaadin.AbstractView;
import issr.boundary.vaadin.MainApplication;
import issr.controller.ControlloreCreazionePuntoVendita;
import issr.controller.ControlloreCreazionePuntoVendita_Service;
import issr.controller.Utente;
import issr.misc.Labels;
import java.util.List;

/**
 *
 * @author cecco
 */
public class PannelloCreazionePuntoVendita extends AbstractView implements Button.ClickListener {

    private ControlloreCreazionePuntoVendita_Service cls;
    private ControlloreCreazionePuntoVendita controllore;
    private final FormLayout layout;
    private final TextField locazioneField = new TextField(Labels.LOCAZIONE);
    private final TextField nomeField = new TextField(Labels.NOME);
    private final Select titolareSelect = new Select(Labels.TITOLARE);
    private final Form form = new Form();
    private final Button submit;

    public PannelloCreazionePuntoVendita() {
        cls = new ControlloreCreazionePuntoVendita_Service();
        controllore = cls.getControlloreCreazionePuntoVenditaPort();
        layout = new FormLayout();
        setSizeFull();
        setCompositionRoot(layout);
        layout.setHeight("100%");
        layout.setWidth("100%");
        layout.setSpacing(true);
        layout.setMargin(true);

        nomeField.setRequired(true);
        locazioneField.setRequired(true);
        titolareSelect.setRequired(true);
        titolareSelect.setImmediate(true);

        form.addField(Labels.NOME, nomeField);
        form.addField(Labels.LOCAZIONE, locazioneField);
        form.addField(Labels.TITOLARE, titolareSelect);

        layout.addComponent(form);
        
        submit = new Button("Submit", this);
        submit.setClickShortcut(ShortcutAction.KeyCode.ENTER);
        layout.addComponent(submit);
        setCompositionRoot(layout);
    }

    protected void resetForm() {
        nomeField.setValue("");
        locazioneField.setValue("");
        titolareSelect.setValue("");
        titolareSelect.removeAllItems();
    }
    
    protected void visualizzaForm() {
        resetForm();
        List<Utente> listaGestoriPV = controllore.ottieniListaGestoriPVDisponibili();
        for (Utente gestorepv : listaGestoriPV) {
            titolareSelect.addItem(gestorepv);
        }
    }

    @Override
    protected void open() throws Exception {
        visualizzaForm();
    }

    @Override
    protected void close() throws Exception {
    }

    @Override
    public void buttonClick(ClickEvent event) {
        if (controllore.creaNuovoPuntoVendita((String) nomeField.getValue(),
                (String) locazioneField.getValue(),
                (Utente) titolareSelect.getValue(),
                (Utente) MainApplication.getProject().getUser()) == true) {

            MainApplication.getProject().getMainWindow().showNotification(
                    "Punto vendita " + (String) nomeField.getValue() + " creato con successo");
        } else {
            MainApplication.getProject().getMainWindow().showNotification(
                    "Errore creazione punto vendita");
        }
    }
}
